package com.school.dao.mybatis;

import com.school.entity.Student;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 学生Mapper接口（MyBatis）
 * 用于复杂SQL查询
 */
@Mapper
public interface StudentMapper {
    
    /**
     * 插入学生
     */
    int insert(Student student);
    
    /**
     * 更新学生
     */
    int update(Student student);
    
    /**
     * 删除学生
     */
    int deleteById(@Param("id") Long id);
    
    /**
     * 根据ID查询
     */
    Student findById(@Param("id") Long id);
    
    /**
     * 根据学号查询
     */
    Student findByStudentId(@Param("studentId") String studentId);
    
    /**
     * 分页查询
     */
    List<Student> findByPage(Map<String, Object> params);
    
    /**
     * 统计总数
     */
    long count(Map<String, Object> params);
    
    /**
     * 批量插入
     */
    int batchInsert(@Param("list") List<Student> students);
    
    /**
     * 查询所有学生
     */
    List<Student> findAll();
    
    /**
     * 根据班级统计学生数
     */
    int countByClassName(@Param("className") String className);
    
    /**
     * 根据宿舍统计学生数
     */
    int countByDormitory(@Param("building") String building, @Param("dormitory") String dormitory);
}


